﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Jurassic_Island;
using System.Web.Security;
using System.Data.SqlTypes;
using System.IO;

namespace JurassicIslandWeb
{
    public partial class PanelJugador : System.Web.UI.Page
    {
        ENJugadores enJugAux = new ENJugadores();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!User.Identity.IsAuthenticated) //si NO hay usuario autenticado
                Response.Redirect("~/Bienvenida.aspx"); //se le redirige a la pagina de bienvenida
            else
            {
                String ruta = "Images/Avatares/";
                enJugAux = enJugAux.ObtenerJugador(User.Identity.Name); //Comprobamos que el jugador todavía existe
                try
                {
                    //Image1.ImageUrl = ruta + enJugAux;
                    if (!IsPostBack)
                    {
                        tbNombre.Text = enJugAux.Nombre;
                        tbApellidos.Text = enJugAux.Apellidos;
                        tbEmail.Text = enJugAux.Email;
                        tbPassword.Text = enJugAux.Password;
                        tbPassword2.Text = enJugAux.Password;
                        DateTime fecha = DateTime.Parse(enJugAux.Fechanac.ToString());
                        this.tbDia.Text = fecha.Day.ToString();
                        ddlMes.SelectedValue = fecha.Month.ToString();
                        tbAnyo.Text = fecha.Year.ToString();

                        if (enJugAux.Sexo == char.Parse("H"))//coge el numero del ASCII correspondiente a la letra H
                            rblSexo.SelectedValue = "H";
                        else
                            rblSexo.SelectedValue = "M";
                    }
                }
                catch (Exception)
                {   //Llegaremos aquí si no existiera el jugador en la base de datos.
                    FormsAuthentication.SignOut(); //Se cierra la sesión para borrar la cookie.
                    Response.Redirect("~/Bienvenida.aspx"); //Se le redirige a la pagina de bienvenida
                }
                Page.Title = Master.Page.Header.Title + " - Panel de " + User.Identity.Name;
            }

        }

        protected void btEditar_Click(object sender, EventArgs e)
        {
            btEditar.Visible = false;
            btGuardar.Visible = true;
            tbEmail.ReadOnly = false;
            tbNombre.ReadOnly = false;
            tbApellidos.ReadOnly = false;
            tbPassword.ReadOnly = false;
            tbPassword2.Visible = true;
            lPassword2.Visible = true;
            rblSexo.Enabled = true;
            tbDia.ReadOnly = false;
            ddlMes.Enabled = true;
            tbAnyo.ReadOnly = false;
            fuAvatar.Visible = true;
            
        }

        protected void btGuardar_Click(object sender, EventArgs e)
        {
           
            Validate("Editar");
            //Hacemos la´s validaciones custom después del Validate() para que no se borren.
            customValidatorFechaNac.IsValid = ValidarFecha();
            bool valido = true;

            //FechaNac
            valido &= requiredValidatorDia.IsValid && expresionValidatorDia.IsValid;
            valido &= requiredValidatorAño.IsValid && expresionValidatorAño.IsValid;
            valido &= customValidatorFechaNac.IsValid;
            //Sexo
            valido &= requiredValidatorSexo.IsValid;
            //Email
            valido &= requiredValidatorEmail.IsValid && expresionValidatorEmail.IsValid;
            //Password
            valido &= expresionValidatorPassword.IsValid;
            //Password2
            valido &= compareValidatorPassword2.IsValid;

            if (valido)
            {
                //Registrar Jugador
                try
                {
                    if (!tbPassword.Text.Equals(""))
                        enJugAux.Password = tbPassword.Text;                    
                    enJugAux.Email = tbEmail.Text;
                    enJugAux.Fechanac = new SqlDateTime(int.Parse(tbAnyo.Text), int.Parse(ddlMes.SelectedValue), int.Parse(tbDia.Text));
                    enJugAux.Sexo = char.Parse(rblSexo.SelectedValue);
                    enJugAux.Nombre = tbNombre.Text;
                    enJugAux.Apellidos = tbApellidos.Text;
                    if (fuAvatar.HasFile)
                    {
                        String nombreFoto = enJugAux.Jugador + Path.GetExtension(fuAvatar.PostedFile.FileName);
                        String rutaServer = Server.MapPath(@"Images\Avatares\");
                        String pathFoto = Path.GetFullPath(rutaServer + nombreFoto);

                        fuAvatar.SaveAs(pathFoto);
                        //String avatar = SubirAvatar(fuAvatar.,enJugAux.Jugador);
                        enJugAux.Avatar = nombreFoto;
                    }
                    
                    if (!enJugAux.ActualizarJugador())
                        throw new Exception("¡Error! No se pudo cambiar los campos del registro");
                    else
                        lSuccess.Visible = true;
                }
                catch (Exception ex)
                {
                    lSuccess.Text = ex.Message;
                    lSuccess.Visible = true;
                }
            }
        }

        //Devuelve true si se puede formar una fecha válida
        protected bool ValidarFecha()
        {
            bool retorno = false;
            try
            {
                // Test whether the value entered into the text box is even.
                int dia = int.Parse(tbDia.Text);
                int mes = int.Parse(ddlMes.SelectedValue);
                int año = int.Parse(tbAnyo.Text);
                SqlDateTime fNac = new SqlDateTime(año, mes, dia);

                retorno = true;
            }

            catch (Exception ex)
            {
                retorno = false;
            }
            return retorno;
        }

        protected void lnkBtnEliminar_Click(object sender, EventArgs e)
        {
            try
            {
                enJugAux.ObtenerJugador(User.Identity.Name).EliminarJugador();
                FormsAuthentication.SignOut();
                Response.Redirect("~/Bienvenida.aspx");
            }
            catch (Exception)
            {
            }
        }



   

              
    }
}